package zdori.swing;


import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

	
public class SwingMenu extends JMenuBar{
	//메뉴 작성법
	//jmenubar -> jmenu -> jmenuitem
	
	private JMenu mnFile = null;	//파일
	private JMenu mnEdit = null;	//편집
	private JMenu mnView = null;	//보기
	private JMenu mnTool = null;	//도구
	private JMenu mnWndw = null;	//창
	private JMenu mnHelp = null;	//도움말
	
	private static SwingMenuActionListener mnal = null;
	
	public SwingMenu() {
		// TODO Auto-generated constructor stub
		mnal = new SwingMenuActionListener();
		makeMenu();
		makeMenuItem();
		addShortCut();
		addMenu();
	}

	//메뉴바에 추가할 메뉴를 생성
	private void makeMenu() {
		// TODO Auto-generated method stub
		
		//mnFile.setFont(new Font("맑은 고딕",Font.BOLD,12));	
		//메뉴 글꼴 변경을 위해 setFont 메서드사용
		//하지만, 모든 메뉴와 메뉴항목에 setFont를 사용하는 것은 무척 번거로운 일임
		//폰트를 다른것으로 바꾸기라도 한다면..ㅠㅠ
		//따라서,프로그램 전체 글꼴을 변경하는 방법을 이용
		//main 메서드에서 FontUIResource 이용함
		
		mnFile = new JMenu(" 파 일 (F) ");
		//mnEdit.setFont(new Font("맑은 고딕",Font.BOLD,12));
		mnEdit = new JMenu(" 편 집 (E) ");
		mnView = new JMenu(" 보 기 (V) ");
		mnTool = new JMenu(" 도 구 (T) ");
		mnWndw = new JMenu(" 창 (W) ");
		mnHelp = new JMenu(" 도움말 (H) ");
	}
	
	//메뉴항목에 단축키 지정
	private void addShortCut() {
		// TODO Auto-generated method stub
		mnFile.setMnemonic(KeyEvent.VK_F);
		mnEdit.setMnemonic(KeyEvent.VK_E);
		mnView.setMnemonic(KeyEvent.VK_V);
		mnTool.setMnemonic(KeyEvent.VK_T);
		mnWndw.setMnemonic(KeyEvent.VK_W);
		mnHelp.setMnemonic(KeyEvent.VK_H);
	}

	//생성 및 설정 메뉴를 메뉴바에 추가
	private void addMenu() {
		// TODO Auto-generated method stub
		add(mnFile);
		add(mnEdit);
		add(mnView);
		add(mnTool);
		add(mnWndw);
		add(mnHelp);
	}

	//메뉴에 추가할 메뉴항목 menuitem 생성
	//배열이 좀 더 편하다고 하심
	private JMenuItem makeMenuItems(String text, String img, int skey, boolean off, int akey ){
		
		//SwingMenuActionListener mnal = new SwingMenuActionListener();
		
		String icon = null;	//메뉴에 쓸 아이콘
		
		if(img != null){
			icon = "/images/main/"+img+".png";
		}
		
		JMenuItem mnitem = null;	//메뉴항목
		//오류방지
		try {
			mnitem = new JMenuItem(text,new ImageIcon(getClass().getResource(icon)));
		} catch (Exception e) {
			// TODO: handle exception
			mnitem = new JMenuItem(text);
		}
		
		/*
		if(img != null){
			mnitem = new JMenuItem(text,new ImageIcon(getClass().getResource(icon)));
		}else{
			mnitem = new JMenuItem(text);
		}
		*/
		mnitem.setEnabled(off);	//메뉴 활성/비활성
		mnitem.setMnemonic(skey);
		if(akey != 0){
			mnitem.setAccelerator(KeyStroke.getKeyStroke(akey,ActionEvent.CTRL_MASK));	//단축키
		}
		
		
		//이벤트 처리관련 메서드 등록
		mnitem.addActionListener(mnal);
		mnitem.setActionCommand(img);
		
		return mnitem;
	}
	
	private void makeMenuItem(){
		
		//JMenuItem mntmNewn =mnFile.add(makeMenuItems("새파일(N)", "new",KeyEvent.VK_N, true,KeyEvent.VK_1));
		//mnFile.addSeparator();
		//mntmNewn.addActionListener(mnActionLisener);
		//mntmNewn.setActionCommand("new");
		
		//SwingMenuActionListener sal = new SwingMenuActionListener();
		//JMenuItem jmi = new JMenuItem();
		
		mnFile.add(makeMenuItems("새 파일 (N)          ", "new" , KeyEvent.VK_N, true , KeyEvent.VK_1));
		//jmi.addActionListener(sal);
		//jmi.setActionCommand("new");
		mnFile.addSeparator();
		mnFile.add(makeMenuItems("닫 기 (C)           ", "close" , KeyEvent.VK_C, true, KeyEvent.VK_2));
		mnFile.addSeparator();
		mnFile.add(makeMenuItems("종 료 (X)          ", "exit" , KeyEvent.VK_X, true, KeyEvent.VK_3));
		
		//다이알로그(모달)
		mnView.add(makeMenuItems("보 기 (V)          ", "view" , KeyEvent.VK_V, true, KeyEvent.VK_4));
		mnHelp.add(makeMenuItems("정 보 (I)          ", "info" , KeyEvent.VK_I, true, 0));
		
	}
	
	
}
